package com.product.trace.service.impl;

import java.util.List;

import com.product.common.utils.DateUtils;
import com.product.common.utils.SecurityUtils;
import com.product.trace.VO.ProductOut2VO;
import com.product.trace.VO.UniquenessIntoVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.product.trace.mapper.ProductIntoMapper;
import com.product.trace.domain.ProductInto;
import com.product.trace.service.IProductIntoService;

/**
 * 商品采购详情Service业务层处理
 *
 * @author wanghui
 * @date 2022-08-22
 */
@Service
public class ProductIntoServiceImpl implements IProductIntoService {
    @Autowired
    private ProductIntoMapper productIntoMapper;

    /**
     * 查询商品采购详情
     *
     * @param id 商品采购详情主键
     * @return 商品采购详情
     */
    @Override
    public ProductInto selectProductIntoById(Integer id) {
        return productIntoMapper.selectProductIntoById(id);
    }

    /**
     * 查询商品采购详情列表
     *
     * @param productInto 商品采购详情
     * @return 商品采购详情
     */
    @Override
    public List<ProductInto> selectProductIntoList(ProductInto productInto) {
        return productIntoMapper.selectProductIntoList(productInto);
    }

    /**
     * 新增商品采购详情
     *
     * @param productInto 商品采购详情
     * @return 结果
     */
    @Override
    public int insertProductInto(ProductInto productInto) {
        productInto.setCreateTime(DateUtils.getNowDate());
        //获取用户id
        String userId = String.valueOf(SecurityUtils.getUserId());
        //获取用户姓名
        String username = SecurityUtils.getUsername();
        //填充采购员id
        productInto.setStaffId(userId);
        //填充采购员姓名
        productInto.setCommodityStaff(username);
        return productIntoMapper.insertProductInto(productInto);
    }

    /**
     * 修改商品采购详情
     *
     * @param productInto 商品采购详情
     * @return 结果
     */
    @Override
    public int updateProductInto(ProductInto productInto) {
        //除过监管人员，其他人员禁用修改，如果需要修改，必须提交申请，通过监管部门进行信息修改
        //填充监管人员id
        productInto.setCheckId(String.valueOf(SecurityUtils.getUserId()));
        //填充监管人员姓名
        productInto.setCheckStaff(SecurityUtils.getUsername());
        //判断采购企业是否通过了审核
        if (productInto.getCommodityStatus().trim().equals("0")) {
            //获取通过审核的授权码和唯一标识
            String ord = String.valueOf(productInto.getCommodityOutId());
            UniquenessIntoVO uniquenessIntoVO = productIntoMapper.getSecturityCodeAndUUID(ord);
            //实体类注入授权码和唯一标识
            productInto.setSecturityCode(uniquenessIntoVO.getSecturityCode());
            productInto.setCommodityUuid(uniquenessIntoVO.getCommodityUuid());
        }
        productInto.setUpdateTime(DateUtils.getNowDate());
        return productIntoMapper.updateProductInto(productInto);
    }

    /**
     * 批量删除商品采购详情
     *
     * @param ids 需要删除的商品采购详情主键
     * @return 结果
     */
    @Override
    public int deleteProductIntoByIds(Integer[] ids) {
        return productIntoMapper.deleteProductIntoByIds(ids);
    }

    /**
     * 删除商品采购详情信息
     *
     * @param id 商品采购详情主键
     * @return 结果
     */
    @Override
    public int deleteProductIntoById(Integer id) {
        return productIntoMapper.deleteProductIntoById(id);
    }

    @Override
    public List<ProductOut2VO> getAllProductList(ProductOut2VO product) {
        return productIntoMapper.getAllProductList(product);
    }
}
